From d8f6c8bb6c2d77cbd4022464a1b7e3c817451000 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 6 May 2012 10:57:28 -0700 Subject: [PATCH] * files.el (dir-locals-read-from-file): Mention dir-locals in any error message. --- lisp/ChangeLog | 5 +++++ lisp/files.el | 28 +++++++++++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 021331cb8dd..cfde3534d77 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-05-06 Glenn Morris + + * files.el (dir-locals-read-from-file): + Mention dir-locals in any error message. + 2012-05-06 Chong Yidong * emacs-lisp/package.el (package-built-in-p): Handle the `emacs' diff --git a/lisp/files.el b/lisp/files.el index 8df2942195e..6a91129dd1c 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3623,19 +3623,21 @@ FILE is the name of the file holding the variables to apply. The new class name is the same as the directory in which FILE is found. Returns the new class name." (with-temp-buffer - ;; Errors reading the file are not very informative. - ;; Eg just "Error: (end-of-file)" does not give any clue that the - ;; problem is related to dir-locals. - (with-demoted-errors - (insert-file-contents file) - (let* ((dir-name (file-name-directory file)) - (class-name (intern dir-name)) - (variables (let ((read-circle nil)) - (read (current-buffer))))) - (dir-locals-set-class-variables class-name variables) - (dir-locals-set-directory-class dir-name class-name - (nth 5 (file-attributes file))) - class-name)))) + ;; This is with-demoted-errors, but we want to mention dir-locals + ;; in any error message. + (let ((err (make-symbol "err"))) + (condition-case err + (progn + (insert-file-contents file) + (let* ((dir-name (file-name-directory file)) + (class-name (intern dir-name)) + (variables (let ((read-circle nil)) + (read (current-buffer))))) + (dir-locals-set-class-variables class-name variables) + (dir-locals-set-directory-class dir-name class-name + (nth 5 (file-attributes file))) + class-name)) + (error (message "Error reading dir-locals: %S" err) nil))))) (defun hack-dir-local-variables () "Read per-directory local variables for the current buffer. -- 2.30.2